<?php
/**
 *  Defino la interface por defecto de los objetos del
 *  "Modelo objeto dominio del problema MODP "
 *  osea, los que son mapeables
 */
interface IMapeable
{
/**
 * Guardar, es la que se encarga de persistir directamente los datos
 * Para ello llama a existe() que retorna true si el objeto ya existe
 * en la base de datos (ya tiene asignado id) y false si aun no existe.
 * Si no existe el objeto, llama directamente a - crear() que crea la
 * fila en la base de datos
 * Si existe llama a -actualizar() que se encarga de actualizar los datos
 * 
 * De esta manera el "Cliente final" llama a Guardar y es transparente para el
 * si se debe crear o actualizar
 * 
 * @return boolean $exito 'Se guardo con exito?'
 */
	public function Guardar($obj);
/**
 * DarBaja() : Ahh no tengo que explicar esto, depende el objeto, si se elimina lo
 * eliminamos con un SQL DELETE FROM y se da de baja, le cambiamos el estado con un
 * SQL UPDATE ... estado=baja ...
 * @return boolean $exito 'Me die de baja / elimine con exito?'
 */
	public function DarBaja($obj);
/**
 * Cargar($id) recibe un id de una tabla, lo busca en la BD y carga los datos en el objeto
 */
	public function Cargar($id);
/**
 * ObtenerTodos devuelve un Array con todos los objetos del Tipo de la clase
 */
	public function ObtenerTodos();
}
?>